// 主要JS文件

document.addEventListener('DOMContentLoaded', function() {
    // 主题切换功能
    const savedTheme = localStorage.getItem('theme') || 'light';
    document.body.classList.toggle('theme-dark', savedTheme === 'dark');
    
    // 初始化各模块
    initializeModules();
});

// 初始化所有模块
function initializeModules() {
    // 获取当前页面
    const currentPage = getCurrentPage();
    
    // 根据当前页面加载相应的模块
    switch(currentPage) {
        case 'index':
            // 首页已在timer.js中实现
            break;
        case 'goals':
            // 目标页面
            if (typeof initGoalsPage === 'function') {
                initGoalsPage();
            }
            break;
        case 'statistics':
            // 统计页面
            if (typeof initStatisticsPage === 'function') {
                initStatisticsPage();
            }
            break;
        case 'settings':
            // 设置页面
            if (typeof initSettingsPage === 'function') {
                initSettingsPage();
            }
            break;
    }
}

// 获取当前页面
function getCurrentPage() {
    const path = window.location.pathname;
    
    if (path.endsWith('/goals')) {
        return 'goals';
    } else if (path.endsWith('/statistics')) {
        return 'statistics';
    } else if (path.endsWith('/settings')) {
        return 'settings';
    } else {
        return 'index';
    }
}

// 全局时间修正函数 - 强制使用2024年而非系统可能错误的2025年
function correctDateYear(date) {
    const d = new Date(date);
    // 如果年份是2025年或更大，则强制设置为2024年
    if (d.getFullYear() >= 2025) {
        d.setFullYear(2024);
    }
    return d;
}

// 获取正确年份的当前日期
function getCurrentDate() {
    const now = new Date();
    return correctDateYear(now);
}

// API请求封装
async function api(url, method = 'GET', data = null) {
    // 如果数据中包含日期时间字段，确保年份正确
    if (data) {
        if (data.start_time) {
            const correctedStart = correctDateYear(new Date(data.start_time));
            data.start_time = correctedStart.toISOString();
        }
        if (data.end_time) {
            const correctedEnd = correctDateYear(new Date(data.end_time));
            data.end_time = correctedEnd.toISOString();
        }
        if (data.date) {
            const correctedDate = correctDateYear(new Date(data.date));
            data.date = correctedDate.toISOString().split('T')[0];
        }
        if (data.deadline) {
            const correctedDeadline = correctDateYear(new Date(data.deadline));
            data.deadline = correctedDeadline.toISOString();
        }
    }

    const options = {
        method,
        headers: {
            'Content-Type': 'application/json',
        }
    };
    
    if (data && (method === 'POST' || method === 'PUT')) {
        options.body = JSON.stringify(data);
    }
    
    try {
        const response = await fetch(`/api${url}`, options);
        
        if (!response.ok) {
            throw new Error(`API错误: ${response.status}`);
        }
        
        if (response.status === 204) {
            return null;
        }
        
        return await response.json();
    } catch (error) {
        console.error('API请求错误:', error);
        throw error;
    }
}

// 日期格式化
function formatDate(date) {
    const d = new Date(date);
    return d.toLocaleDateString('zh-CN');
}

// 时间格式化 (分:秒)
function formatTime(seconds) {
    const mins = Math.floor(seconds / 60);
    const secs = seconds % 60;
    return `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
}

// 显示通知
function showNotification(title, options = {}) {
    if (!("Notification" in window)) {
        alert(title);
        return;
    }
    
    if (Notification.permission === "granted") {
        new Notification(title, options);
    } else if (Notification.permission !== "denied") {
        Notification.requestPermission().then(function (permission) {
            if (permission === "granted") {
                new Notification(title, options);
            }
        });
    }
}

// 导航到页面
function navigateTo(page) {
    // 隐藏所有页面
    document.querySelectorAll('.page').forEach(p => {
        p.classList.remove('active');
    });
    
    // 显示目标页面
    const targetPage = document.getElementById(`${page}-page`);
    if (targetPage) {
        targetPage.classList.add('active');
        
        // 更新导航状态
        document.querySelectorAll('nav a').forEach(a => {
            a.classList.remove('active');
        });
        
        const navLink = document.querySelector(`nav a[href="#${page}"]`);
        if (navLink) {
            navLink.classList.add('active');
        }
        
        // 如果是统计页面，刷新数据
        if (page === 'statistics' && window.loadData) {
            window.loadData();
        }
    }
} 